<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="Content-Language" content="en">

    <meta name="author" content="刘铭洋">
    <meta name="description" content="计算机核心基础">
    <meta name="keywords" content="blog,developer,personal">

    <meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="sh-01-计算机核心基础"/>
<meta name="twitter:description" content="计算机核心基础"/>

    <meta property="og:title" content="sh-01-计算机核心基础" />
<meta property="og:description" content="计算机核心基础" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://nagaseren-a.gitee.io/posts/sh-01-%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%A0%B8%E5%BF%83%E5%9F%BA%E7%A1%80/" />
<meta property="article:published_time" content="2020-11-18T10:10:32+08:00" />
<meta property="article:modified_time" content="2020-11-18T10:10:32+08:00" />


    <title>
  sh-01-计算机核心基础 · 刘铭洋
</title>

    
      <link rel="canonical" href="https://nagaseren-a.gitee.io/posts/sh-01-%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%A0%B8%E5%BF%83%E5%9F%BA%E7%A1%80/">
    

    <link href="https://fonts.googleapis.com/css?family=Lato:400,700%7CMerriweather:300,700%7CSource+Code+Pro:400,700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.7/css/fork-awesome.min.css" integrity="sha256-gsmEoJAws/Kd3CjuOQzLie5Q3yshhvmo7YNtBG7aaEY=" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" integrity="sha256-l85OmPOjvil/SOvVt3HnSSjzF1TUMyT9eV0c2BzEGzU=" crossorigin="anonymous" />

    
      
      
      <link rel="stylesheet" href="/css/coder.min.f01c647a0d25b40da992a37c3376291185eed8a50ced8c26cc2c0bcfe38c97df.css" integrity="sha256-8Bxkeg0ltA2pkqN8M3YpEYXu2KUM7YwmzCwLz&#43;OMl98=" crossorigin="anonymous" media="screen" />
    

    

    
      
        
        
        <link rel="stylesheet" href="/css/coder-dark.min.126ad3988d46bdae6217a11105b53c9662bca05f39d42d3c0fb366919d334620.css" integrity="sha256-EmrTmI1Gva5iF6ERBbU8lmK8oF851C08D7NmkZ0zRiA=" crossorigin="anonymous" media="screen" />
      
    

    

    

    <link rel="icon" type="image/png" href="/images/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/images/favicon-16x16.png" sizes="16x16">

    <link rel="apple-touch-icon" href="/images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">

    
      <script src="https://twemoji.maxcdn.com/v/latest/twemoji.min.js" crossorigin="anonymous"></script>
    

    <meta name="generator" content="Hugo 0.78.2" />
  </head>

  
  
    
  
  <body class="colorscheme-auto"
        onload=" twemoji.parse(document.body); "
  >
    
<div class="float-container">
    <a id="dark-mode-toggle" class="colorscheme-toggle">
        <i class="fa fa-adjust fa-fw" aria-hidden="true"></i>
    </a>
</div>


    <main class="wrapper">
      <nav class="navigation">
  <section class="container">
    <a class="navigation-title" href="/">
      刘铭洋
    </a>
    
      <input type="checkbox" id="menu-toggle" />
      <label class="menu-button float-right" for="menu-toggle">
        <i class="fa fa-bars fa-fw" aria-hidden="true"></i>
      </label>
      <ul class="navigation-list">
        
          
            <li class="navigation-item">
              <a class="navigation-link" href="/about/">About</a>
            </li>
          
            <li class="navigation-item">
              <a class="navigation-link" href="/posts/">Blog</a>
            </li>
          
            <li class="navigation-item">
              <a class="navigation-link" href="/projects/">Projects</a>
            </li>
          
            <li class="navigation-item">
              <a class="navigation-link" href="/contact/">Contact me</a>
            </li>
          
        
        
          
          
          
            
          
            
              
                <li class="navigation-item menu-separator">
                  <span>|</span>
                </li>
                
              
              <li class="navigation-item">
                <a href="https://nagaseren-a.gitee.io/zh_cn/">Chinese</a>
              </li>
            
          
        
      </ul>
    
  </section>
</nav>


      <div class="content">
        
  <section class="container post">
    <article>
      <header>
        <div class="post-title">
          <h1 class="title">sh-01-计算机核心基础</h1>
        </div>
        <div class="post-meta">
          <div class="date">
            <span class="posted-on">
              <i class="fa fa-calendar" aria-hidden="true"></i>
              <time datetime='2020-11-18T10:10:32&#43;08:00'>
                November 18, 2020
              </time>
            </span>
            <span class="reading-time">
              <i class="fa fa-clock-o" aria-hidden="true"></i>
              One-minute read
            </span>
          </div>
          <div class="authors">
    <i class="fa fa-user" aria-hidden="true"></i>
      <a href="/authors/%E5%88%98%E9%93%AD%E6%B4%8B/">刘铭洋</a></div>
          <div class="categories">
  <i class="fa fa-folder" aria-hidden="true"></i>
    <a href="/categories/blog/">Blog</a></div>

          
        </div>
      </header>

      <div>
        
        <h1 id="1-开篇介绍">1 开篇介绍🦴</h1>
<p>Hello，大家好，我是Nagase，Life is short, I use Python. 人生苦短，我用Python，又到了学习Python的时刻，接下来就让我们感受一下Python独特的魅力吧。</p>
<p>那么在接下来的学习时光中，我们的学习目标是：使用Python这门编程语言来编写一个ATM + 购物车的程序，在正式学习Python之前，让我们先来看看计算机相关的概念，祝你学的开心🥳</p>
<p><img src="https://gitee.com/nagaseren-a/blog-image/raw/master/img/python-basics-wide2.f73a9e9bf9b8.jpg" alt="python-basics-wide2.f73a9e9bf9b8"></p>
<h2 id="11-什么是语言什么是编程语言为什么要有编程语言">1.1 什么是语言？什么是编程语言？为什么要有编程语言？🌕</h2>
<p><img src="https://gitee.com/nagaseren-a/blog-image/raw/master/img/image-20201012204703307.png" alt="image-20201012204703307"></p>
<p>语言指的是一种事物与另外一种事物进行沟通交流的媒介/工具，比如：汉语、英语、韩语、日语等。</p>
<p>编程语言指的是人类与计算机进行沟通交流的媒介/工具。</p>
<p>编程语言存在的目的是提供一种与计算机进行沟通交流的媒介/工具，进而让计算机按照人类的思维逻辑去工作，从而解放人力。</p>
<h2 id="12-什么是编程为什么要编程">1.2 什么是编程？为什么要编程？</h2>
<p><img src="https://gitee.com/nagaseren-a/blog-image/raw/master/img/image-20201012204741618.png" alt="image-20201012204741618"></p>
<p>编程指的是把人类想让计算机做的事情用编程语言翻译出来并写在文件中（这一系列的文件就是程序）。</p>
<p>编程的目的就是为了让计算机按照人类的思维逻辑去工作，从而解放人力。</p>
<p>因此，接下来我们的学习方向就是：</p>
<ol>
<li>编程语言，为了能够与计算机进行沟通交流，我们必须要学会一种与计算机进行沟通交流的语言，这个语言就是编程语言，比如：Python、Java、C、C++。</li>
<li>我们要交流的对象—计算机。由于我们想让计算机帮助我们人类做一些事情，所以我们就必须对计算机有所了解，因此，我们要学习计算机是由什么组成的、它能做什么事以及它是怎么样工作的。</li>
</ol>
<h1 id="2-计算机组成原理">2 计算机组成原理</h1>
<h2 id="21-什么是计算机">2.1 什么是计算机</h2>
<p>计算机俗称“电脑”，也就是通电的大脑，它包含了我们人类对计算机的终极期望，希望计算机通电以后，就真的能够像我们人类一样去工作，从而解放人力。</p>
<h2 id="22-为什么要用计算机">2.2 为什么要用计算机</h2>
<p>在奴隶制社会，奴隶主一般会让奴隶帮助他做一些事情，但是奴隶也是人啊，是人就没法一直不停歇的工作，那么计算机就是这样的，计算机作为一台机器，可以一直不停歇的进行工作，所以我们要使用计算机，控制计算机帮助我们做一些事情。</p>
<h2 id="23-计算机的五大组成部分">2.3 计算机的五大组成部分</h2>
<p>计算机有五大组成部分。由于我们想要控制计算机帮助人类做一些事情，那么计算机在设计的时候就一定是仿照我们人类去设计的，所以我们将计算机的五大组成部分比喻成人类的各种器官</p>
<p><img src="https://gitee.com/nagaseren-a/blog-image/raw/master/img/20180830595507_xKflYA.gif" alt="20180830595507_xKflYA"></p>
<h3 id="231-控制器">2.3.1 控制器</h3>
<p>作用：控制器是计算机的指挥系统，负责控制计算机其他硬件是如何运行的</p>
<p>类比：人类的大脑</p>
<h3 id="232-运算器">2.3.2 运算器</h3>
<p>作用：运算器是计算机的运算功能，用来做运算，包括数学运算和逻辑运算</p>
<p>类比：人类的大脑</p>
<p>控制器 + 运算器 = CPU（中央处理单元）</p>
<h3 id="233-存储器io设备">2.3.3 存储器/IO设备</h3>
<p>存储器是计算机的记忆功能，用来存储数据</p>
<p>存储器主要分为两种：</p>
<ul>
<li>内存：存储性能强，基于电工作，断电数据丢失，不能永久保存数据
<ul>
<li>类比：人类的大脑</li>
</ul>
</li>
<li>外存：存储性能弱，基于磁工作，断电数据不丢失，能够永久保存数据
<ul>
<li>类比：人类的纸质笔记本</li>
</ul>
</li>
</ul>
<h3 id="234-输入设备">2.3.4 输入设备</h3>
<p>作用：输入设备是计算机接收外界输入数据的工具，比如：键盘、鼠标</p>
<p>类比：人类的眼睛、耳朵</p>
<h3 id="235-输出设备">2.3.5 输出设备</h3>
<p>作用：输出设备是计算机向外输出数据的工具，比如：显示器、音箱、打印机</p>
<p>类比：人类的嘴巴</p>
<h2 id="24-一个程序的运行与三大核心硬件的关系">2.4 一个程序的运行与三大核心硬件的关系</h2>
<p>我们编写的程序一定是要运行于计算机硬件之上的，而站在硬件的角度，与程序运行有关的三大核心硬件为CPU、内存、硬盘。</p>
<p>程序最开始一定是存放在硬盘中的，程序的运行一定是事先把程序从硬盘加载到内存中，然后CPU从内存中读取程序的指令来运行程序。</p>
<h1 id="3-操作系统概述">3 操作系统概述</h1>
<h2 id="31-操作系统的由来">3.1 操作系统的由来</h2>
<p>大前提：我们编程的目的就是为了控制计算机，让计算机硬件自发的运行起来，然而硬件直白的讲，只是一堆铁而已，硬件如果要工作，一定需要受到软件的支配。</p>
<p>假如我们要开发一个应用程序，比如：PPS，该软件的一个核心业务就是播放视频，开发者如果要编写程序实现播放视频这个业务逻辑，就必须先控制硬件，让硬件能够正常运行起来，然而这仅仅是刚开始，事实上，在编写应用程序的业务逻辑之前，需要开发者先编写出一套完整的控制程序来控制计算机硬件能够基本运行，那么这就需要开发者对于计算机硬件了如指掌，才能实现控制，如此一来，所有的开发者在开发应用程序之前，都需要经历以下两个步骤：</p>
<ol>
<li>编写一套完整的控制程序，用来控制计算机硬件的基本运行，以及把复杂的硬件操作封装成简单的接口</li>
<li>基于控制程序的接口开发包含一系列业务逻辑的程序，为了与控制程序区分，我们称之为应用程序，以ATM这款应用程序为例，业务逻辑有提款、转账、查询余额等</li>
</ol>
<p>这样一来，对于不同的开发者来讲，应用程序的业务逻辑不尽相同，但是用来控制硬件的控制程序基本相同，为了避免不同的开发者做重复劳动，以及不再需要耗费精力学习硬件相关的知识，那么就有公司专门开发用于控制硬件的控制程序，这个控制程序指的就是我们现在的操作系统。</p>
<p>操作系统的功能就是帮助我们把复杂的硬件控制封装成简单的接口，对于开发应用程序来说只需要调用操作系统提供给我们的接口即可。</p>
<p><img src="https://gitee.com/nagaseren-a/blog-image/raw/master/img/20181228998710_sGJMAK.gif" alt="20181228998710_sGJMAK"></p>
<h2 id="32-系统软件与应用软件">3.2 系统软件与应用软件</h2>
<p>硬件以上运行的都是软件，软件又分为两大类：</p>
<ul>
<li>系统软件：系统软件指的是操作系统，操作系统是计算机硬件与应用软件之间的桥梁，是用来协调、管理、控制计算机硬件与应用软件资源的一款控制程序。</li>
<li>应用软件：应用软件指的就是我们平常所使用的腾讯QQ、PPS等，我们学习Python就是为了开发应用软件</li>
</ul>
<h2 id="33-计算机系统的三层结构">3.3 计算机系统的三层结构</h2>
<p>通过上面的学习我们知道，我们开发应用程序的本质就是在控制硬件，但是我们直接打交道的是操作系统，应用程序都是通过操作系统来间接地控制计算机硬件的，所以一套完整的计算机系统分为以下三层</p>
<p><img src="https://gitee.com/nagaseren-a/blog-image/raw/master/img/image-20201012203241670.png" alt="image-20201012203241670"></p>
<h2 id="34-平台">3.4 平台</h2>
<p>应用程序都是运行于操作系统之上，而操作系统则是运行于硬件之上的，所以承载应用程序的是一台运行有操作系统的计算机，称之为应用程序的运行平台，直白来讲，平台 = 计算机硬件 + 操作系统</p>
<p><img src="https://gitee.com/nagaseren-a/blog-image/raw/master/img/image-20201012204226676.png" alt="image-20201012204226676"></p>
<p>常见的平台有：Windows + 某款硬件、Linux + 某款硬件、macOS + Apple硬件，我们在开发应用程序的时候就需要考虑到应用程序的跨平台性，如果能开发出一款可以在任意平台都能运行的程序，那么对于开发者来讲真是极大的好处。而决定应用软件跨平台的关键因素往往是编程语言的选择，而<code>Python</code>正是这样跨平台性很强的编程语言，这也是我们学习它的原因之一。</p>

      </div>


      <footer>
        


        <div id="disqus_thread"></div>
<script type="application/javascript">
    var disqus_config = function () {
    
    
    
    };
    (function() {
        if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) {
            document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.';
            return;
        }
        var d = document, s = d.createElement('script'); s.async = true;
        s.src = '//' + "yourdiscussshortname" + '.disqus.com/embed.js';
        s.setAttribute('data-timestamp', +new Date());
        (d.head || d.body).appendChild(s);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
        
        
      </footer>
    </article>

    
  </section>

      </div>

      
  <footer class="footer">
    <section class="container">
      
        <p>Enter a text here.</p>
      
      
        ©
        
          2019 -
        
        2020
         刘铭洋 
      
      
         · 
        Powered by <a href="https://gohugo.io/">Hugo</a> & <a href="https://github.com/luizdepra/hugo-coder/">Coder</a>.
      
      
        
      
    </section>
  </footer>


    </main>

    
      
        
        <script src="/js/dark-mode.min.0213e1773e6d1c5a644f847c67a6f8abac49a3776e2976f6008038af8c5b76a1.js"></script>
      
    

    

    

    <script>
(function(f, a, t, h, o, m){
	a[h]=a[h]||function(){
		(a[h].q=a[h].q||[]).push(arguments)
	};
	o=f.createElement('script'),
	m=f.getElementsByTagName('script')[0];
	o.async=1; o.src=t; o.id='fathom-script';
	m.parentNode.insertBefore(o,m)
})(document, window, '//analytics.example.com/tracker.js', 'fathom');
fathom('set', 'siteId', 'ABCDE');
fathom('trackPageview');
</script>


    <script async defer data-domain="example.com" src="https://analytics.example.com/js/plausible.js"></script>


    <script data-goatcounter="https://code.goatcounter.com/count"
        async src="//gc.zgo.at/count.js"></script>

  </body>

</html>
